home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
UTIL
/
FILEUTIL
/
HIERARCH
/
!Hierarchy
/
!Help
< prev
next >
Wrap
Text File
|
1995-01-23
|
17KB
|
363 lines
-------------------------------------------------------------------------
!Hierarchy
-------------------------------------------------------------------------
Version: 1.39, (23.01.1995)
RiscOS: mindestens V2.00
RAM: mindestens 160 Kbytes
Autor: Stefan Tomlik
!Hierarchy ist Public Domain und darf frei kopiert, verbreitet und benutzt
werden. Es ist nicht erlaubt, außer zum Zweck der Aufwandsentschädigung oder
der Begleichung von Versandkosten für !Hierarchy irgendeinen Geldbetrag zu
berechnen.
Da ich nicht garantieren kann, daß dieses Programm fehlerfrei ist (wer kann
das schon), übernehme ich keine Verantwortung für einen etwaigen Verlust von
Daten, Zeit, Geduld oder Nerven, der durch die Benutzung von !Hierarchy
entstanden ist.
Ich verlange für dieses Programm kein Geld, bitte aber um möglichst
originelle Geschenke jeder Art!
Soviel dazu ...
Dieses Programm dient dazu, von Archimedes-typischen Dateisystemen (ADFS,
SCSIFS, IDEFS, RAMFS, ArcFS) Übersichtsdateien zu erstellen.
Übersichtsdateien ähneln vom Inhalt her der Ausgabe von 'Dir' und 'List' auf
dem Commodore Amiga. Weitere Erklärungen kann ich mir eigentlich sparen. Ein
kleines Beispiel:
Inhaltsverzeichnis von SCSI::Sys.$.Grafik.!FYEO
Datei wurde erstellt: 20:05:36 19-Nov-1994
!Boot (323 bytes)
!Help (1237 bytes)
!Run (927 bytes)
!RunImage (48 Kbytes)
!Sprites (2452 bytes)
!Sprites22 (4 Kbytes)
Docs________
Arm'sTech (990 bytes)
Credits (306 bytes)
Future (123 bytes)
History (798 bytes)
Perfs (1914 bytes)
ReadMe (1135 bytes)
= 5 Kbytes
DTable (32 Kbytes)
Sprites (3480 bytes)
Templates (1729 bytes)
= 99 Kbytes
Verzeichnisse: 2
Dateien: 15
Das ist das Inhaltsverzeichnis des PD-Programms !FYEO (was ich übrigens nur
empfehlen kann). An diesem kleinen Beispiel kann man eigentlich alles sehen,
was zu erwähnen wäre, aber ich fasse nochmal zusammen:
- Alphabetische Auflistung aller Objekte in einem Verzeichnis
- Angabe der Größe von Dateien (xxxx bytes/Kbytes/Mbytes)
- Angabe der Größe eines Verzeichnisses (auch von Applikationen).
- Strukturierte Ausgabe je nach Verzeichnisstruktur
- Und ... Drag & Drop! Ich habe dieses Beispiel direkt aus !Hierarchy
importiert.
Der Anlaß für dieses Programm war das Bemühen, die Bestände an Public Domain
auf einer sehr großen Festplatte im Auge behalten zu können. Das war auf die
Dauer mit !FileTree (© John A.M. Tytgat) zu umständlich und unnötig komplex,
obwohl das Programm sehr gut gelungen ist (wenn auch nicht fehlerfrei). Ein
weites gutes Programm zu diesem Thema ist natürlich !DiscSpace von Martin
Wuerthner.
Abgesehen davon wollte ich ausprobieren, wie weit ich mit dem verwendeten
ISO-Pascal-Compiler gehen kann. Wie sich herausstellte, ist dieser für
derartige Aufgaben nicht besonders gut geeignet, da man sich für einige
Sachen fast schon einen Wolf tippt. Abgesehen davon, daß man sich z.B.
Routinen für Strings erst noch selber schreiben muß.
-------------------------------------------------------------------------
Anwendung
-------------------------------------------------------------------------
Starten Sie die Applikation per Doppelklick auf das Applikationsicon in
einem Verzeichnisfenster. Es installiert sich rechts auf der Iconbar.
Wenn Sie keinen Bock mehr haben, weiterzulesen, können Sie auch ganz
einfach die !Help-Applikation verwenden, um sich mit dem Programm ver-
traut zu machen.
Verfügbare Aktionen:
Iconbar:
--------
- SELECT öffnet das Statusfenster, das den aktuellen Zustand von !Hierarchy
anzeigt.
- MENU öffnet das Hauptmenü.
- ADJUST hält einen gerade aktiven Durchlaufprozeß vorübergehend an.
Nochmaliges Anwählen setzt diesen Prozeß fort. (siehe Hauptmenü, 'Pause')
Das Menü-System:
----------------
- Information zeigt das Infofenster für !Hierarchy.
- Sichern führt zu dem üblichen 'Sichern' - Dialog. Der Unterschied ist,
daß dieser Dialog weder auf 'Return' reagiert noch ein OK-Gadget hat.
- Status öffnet das oben bereits erwähnte Statusfenster.
- Pause hält einen gerade aktiven Durchlaufprozeß vorübergehend an.
Nochmaliges Anwählen setzt diesen Prozeß fort.
- Beenden ... beendet die Applikation!
- Optionen . Mit Dateigröße.
Wenn angewählt, speichert !Hierarchy die Größe jeder Datei mit in
der Übersichtsdatei.
- Optionen . Verz. Summieren.
Wenn angewählt, speichert !Hierarchy die Größe aller Dateien eines
Verzeichnisses als Summe mit in der Übersichtsdatei.
- Optionen . App. durchsuchen.
Ist diese Option nicht angewählt, läßt !Hierarchy detaillierte
Informationen zu den Dateien in einem Applikationsverzeichnis
weg und speichert nur die Größe aller Dateien der Applikation in der
Übersichtsdatei. Ich habe diese Option implementiert, da es oft nicht
von Interesse ist, was sich in einer Applikation befindet. (!Run,
!Boot, !RunImage, !Sprites, usw.)
- Optionen . Multitasking.
Ist diese Option nicht angewählt, dann hält !Hierarchy andere Programme
während eines Durchlaufprozesses an (bildlich gesprochen) und beansprucht
die gesamte zur Verfügung stehende Prozessorzeit für sich alleine. Das
Programm arbeitet dadurch *geringfügig* schneller. Es gibt allerdings
andere wichtigere Gründe, diese Option auszuschalten. (siehe unten)
- Optionen . Endnamen benutzen.
Wenn angewählt, setzt !Hierarchy den Endnamen des zu durchlaufenden
Verzeichnisses als Endnamen der zu erzeugenden Übersichtsdatei ein.
In Fällen, wo dies nicht möglich ist, werden alle nicht erlaubten
Zeichen des Namens durch '-' ersetzt. Es ist z.B. nicht möglich,
einer Datei den Namen '$' zu geben.
- Optionen . Optionen sichern. Sichert die aktuellen Einstellungen im
Applikationsverzeichnis. Es wird auch festgehalten, ob das Statusfenster
offen ist oder nicht.
Statusfenster:
--------------
- Aktion: Zeigt den aktuellen Zustand des Programms an. Derzeit entweder
'Waiting ...' oder 'Scanning directory tree of ...'.
- Start: Zeigt während des Durchlaufens einer Verzeichnishirarchie deren
oberstes Verzeichnis an, also den Pfadnamen des Startverzeichnisses.
- Aktuell: Zeigt während des Durchlaufens den Pfadnamen des Verzeichnisses
an, das zum aktuellen Zeitpunkt durchlaufen wird.
- Nach: Zeigt den vollen Pfadnamen der zu erstellenden Übersichtsdatei an.
Wird die Datei zu einer anderen Applikation übertragen, wird der Name
dieser Applikation angezeigt.
- Erfaßt: Zeigt während des Durchlaufens an, wieviele Verzeichnisse und
Dateien !Hierarchy schon untersucht hat.
MENU innerhalb des Fensters öffnet das bereits beschriebene Hauptmenü.
-------------------------------------------------------------------------
Wie erstellt man eine Übersichtsdatei?
-------------------------------------------------------------------------
- Öffnen Sie per MENU das Hauptmenü. Es ist sowohl über Iconbar als auch im
Statusfenster erreichbar.
- Gehen Sie mit der Maus in den 'Sichern' - Dialog.
- Geben Sie einen Namen für die Datei ein. Dieser Name darf keine Pfadangaben
enthalten. Sie können maximal 10 Zeichen eingeben.
- Ziehen Sie das Datei-Icon (Text) aus dem 'Sichern' - Dialog in ein
Verzeichnisfenster. Die Verzeichnisstruktur innerhalb dieses Verzeich-
nisses wird jetzt in der Datei gespeichert.
- Wollen Sie die Übersichtsdatei eines Verzeichnisses woanders als im
Verzeichnis selbst abspeichern, ziehen Sie ein Icon aus dem gewünschten
Verzeichnis auf das Iconbar-Icon oder das Statusfenster von !Hierarchy
und speichern Sie die Datei dann woanders. Alle Pfadangaben werden
entsprechend im Statusfenster angezeigt.
- Das Icon 'Löschen' (im Statusfenster rechts) dient dazu, vor dem
Abspeichern getroffene Entscheidungen rückgängig zu machen: es wird dann
wieder die Verzeichnisstruktur des Verzeichnisses durchlaufen, in dem die
Übersichtsdatei abgespeichert wird.
- Das Icon 'Abbruch' (unter 'Löschen') unterbricht einen gerade aktiven
Durchlaufprozeß. Die Datei wird trotzdem unvollständig gespeichert
oder in der gewünschten Applikation geladen.
- Das Hauptmenü schließt sich selbstständig.
-------------------------------------------------------------------------
Mögliche Erweiterungen
-------------------------------------------------------------------------
- Während eine Datei erstellt wird, ist 'Sichern' im Hauptmenü nicht
anwählbar.
(Ich habe WEDER BOCK NOCH ZEIT, für RiscOS einen Multithread-Aufsatz zu
entwickeln. Das überlasse ich Acorn oder anderen Programmierern. Eine
sinnvolle Möglichkeit wäre, die eigentliche Routine zum Erstellen der
Übersichtsdatei vom Hauptprogramm zu trennen, als eigenen Task laufen
zu lassen und über ein Messageprotokoll zu überwachen.) Es ist übrigens
auch nicht möglich, während der Erstellung einer Datei die Optionen oder
Pfadangaben (mittels 'Löschen') zu verändern, was auch nicht sinnvoll ist.
- Man könnte aus diesem Utility problemlos ein Backup-Programm machen.
Sollte ich irgendwann mal Zeit haben oder mich während des Studiums mit
dem Rucksackproblem beschäftigen, ist es soweit.
- RAM-Transfer von übersichtsdateien (z.B. nach !Edit) ist noch nicht
implementiert. Wäre aber denkbar.
- Dateinamen dürfen in dieser Version nicht länger als 10 Zeichen sein.
- Das nächste Update wird String-Routinen in Assembler enthalten. Die
altbekannte OS_GBPB 10 - Routine läßt sich auch noch verbessern, da
die aktuelle Version die Verzeichniseinträge einzeln durchsucht,
anstatt den Inhalt eines Verzeichnisses komplett abzufragen. Ich
muß mir aber noch etwas überlegen, wie ich Stack-Overflows abfange,
bevor ich die Routine ändere. Diese Version ist mir jedenfalls
eindeutig zu lahm, spätestens nachdem ich M. Wuerthner's !DiscSpace
gesehen habe. Immerhin kann man problemlos im Hintergrund arbeiten,
da *sehr* oft Wimp_Poll aufgerufen wird.
- Ich habe die Applikation soweit internationalisiert, wie es mein
Schulwissen zuläßt. Sollte jemand eine französische, griechische
oder mexikanische Variante hinzufügen wollen ... bitte sehr!
-------------------------------------------------------------------------
Bekannte Probleme
-------------------------------------------------------------------------
- !Hierarchy benutzt das standardisierte Data-Transfer-Protokoll wie im
Programmer's Reference Manual beschrieben. Es kann deshalb zu Fehlern mit
Programmen kommen, die sich nicht an die Vorgaben halten, z.B. !PCompile,
!Zap, !Impression ... Die Dateien im Verzeichnis 'doc' enthalten weitere
Informationen zu diesem Thema. !Impression ist z.B. schon zufrieden,
wenn man die Multitasking-Option von !Hierarchy ausschaltet. Vielleicht
sollte man diesem Programm beim nächsten Update noch beibringen, auf
gewisse Sachen wie z.B. Message_DataLoad zu warten.
- Nachtrag: die Probleme mit !Zap sind beseitigt. Ich bitte höflichst und
untertänigst um Entschuldigung ... ich habe die Dateien in 'doc' noch
etwas erweitert: 'was man nie vergessen sollte'. !Impression 2.19
schmiert immer noch gnadenlos ab, wenn es nach Msg_DataSave keine
weiteren Aufforderungen mehr erhält.
- Größengaben zu offenen Dateien sind inkorrekt. Ich habe bisher auch keine
Idee, wie ich dieses Problem umgehen soll. Die einzige Möglichkeit, die mir
spontan eingefallen ist, die ich aber nicht programmiert habe, ist *CLOSE
vor Aufruf der eigentlichen Routine.
- OS_GBPB steigt manchmal mit der Fehlermeldung aus 'xxx is a file.'
Das kann nur passieren, wenn die Scan-Routine in !Hierarchy versucht,
'xxx' als als Verzeichnis zu untersuchen. Sollte mir das jemand erklären
können oder ein reproduzierbares Beispiel liefern können, bitte melden!
- !Hierarchy ignoriert Directory-Links, die mit !LinkFS oder vom Arbeits-
prinzip her ähnlichen Programmen erzeugt worden sind. Das bleibt auch so,
um zu verhindern, daß irgendwelche Pappnasen sich bei mir über endlose
Rekursionen in ein und demselbem Verzeichnis beschweren.
- Die Implementierung der Solid-Drag-Option von RiscOs 3.xx hat mich eine
Weile aufgehalten und scheint auch noch nicht ganz sauber zu sein. Um
genau zu sein, ist es mir bisher nicht gelungen, DragASprite_Start auf
ein Icon anzuwenden, das das 'indirected'- Flag (bit 8) gesetzt hat. Das
Problem ist mir inzwischen bekannt, aber ich habe noch keine Lösung.
- Die Zähler für die Anzahl von erfaßten Verzeichnissen und Dateien im
Statusfenster werden nicht korrekt angezeigt, wenn die Multitasking-
Option aus ist.
Ich habe schlicht und einfach keine Ahnung, warum das so ist, denn der
aktuelle Pfad WIRD während des Durchlaufens richtig angezeigt.
- Outline-Fonts werden auch in dieser Version nicht richtig gehandhabt. Ich
wäre sehr dankbar, wenn mir jemand Informationen darüber zukommen lassen
würde, wie man auf einfache Art und Weise mit einem 'font reference
count array' umgeht.
Ich bin über jede Hilfe, die ich bekommen kann, dankbar! (Adresse siehe
unten)
- Wie schon beschrieben sind Größenabgaben zu offenen Dateien nicht korrekt.
Um dieses Problem zu umgehen, sollte man Übersichtsdateien nicht in
Verzeichnissen erzeugen, die von !Hierarchy gerade dann durchlaufen
werden. Die Größe (der 'Extent') einer offenen Datei hängt übrigens auch
von der Filecore-Struktur des verwendeten Datenträgers ab.
- Vermeiden Sie es, Archive abzumelden ('Close Arc'), wenn !Hierarchy gerade
einen Pfad innerhalb eines Verzeichnisses von ArcFS durchläuft.
- Es ist natürlich möglich, eine Übersichtsdatei via !Spark in ein Archiv zu
schreiben. Vergessen Sie aber bitte nicht den Unterschied zwischen
Verzeichnisfenster und einem Fenster, das von Spark geöffnet wurde.
- Die Gesamtlänge eines Pfadnamens darf 255 Zeichen nicht überschreiten. Das
dürfte allerdings nur für diejenigen interessant sein, die von der
Festplatten-Krankheit befallen sind und für jedes Unterscheidungsmerkmal
ansonsten ähnlicher Dateien NOCH EIN Unterverzeichnis anfertigen.
Die Verzeichnisse werden rekursiv durchlaufen. Stacküberläufe werden dank
Acorn's ISO-Pascal-Compiler nicht abgefangen.
- Bitte ändern Sie nicht die !Run-Datei im Applikationsverzeichnis. Falls
Sie es doch tun, denken Sie bitte daran, daß die Applikation mindestens
160k braucht. Die !RunImage-Datei ist gesqueezt.
- Da DOSFS (RiscOS 3.10) und einige :-) Image-Filesysteme es wohl nicht
schaffen, den Dateityp einer offenen Datei zu setzen, wird einer neu
erzeugten Übersichtsdatei erst dann der Typ 'Text' (fff) gegeben,
nachdem sie geschlossen wurde.
- Noch etwas zu 'DragASprite'. Was ich erst für einen absolut hirnver-
drehenden und wahrscheinlich unauffindbaren Bug von !Hierarchy gehalten
habe, stellte sich nach einigen Versuchen als Schwäche des DragASprite-
Moduls heraus: zieht man ein Icon aus einem beliebigen 'Save as'-Fenster
in die linke oder rechte untere Ecke des Bildschirms, fängt das Icon an
zu flackern. Das passiert allerdings nur, wenn der Mauszeiger über dem
IconBar-Fenster ist. Ich nehme mal ganz vorwitzig an, daß der scroll_x-
offset der Iconbar auch dann geändert wird, wenn alle Icons in diesem
Fenster noch sichtbar sind (visible_area_x_max = work_area_x_max).
- Version 1.38 benutzt ein neues Menu-Interface. Der Text in Menüs darf
hiermit jetzt länger als 12 Zeichen sein. Richtig. Indirected. Für die
Menü-Einträge wird jetzt OS_Heap benutzt, was allerdings immer noch
nicht zufriedenstellend ist. Ich habe für die Menüs 8 kb im Programm
reserviert. Sollte der Speicherplatz nicht ausreichen, sollte sich
OS_Heap korrekt beschweren und das Programm sich korrekt beenden, was
ich aber noch nicht ausprobiert habe. Was weiterhin zu beachten ist:
Menü-Titel KÖNNEN nicht länger als 12 Zeichen sein.
- Ich habe in Version 1.38 in einem Anfall von Wahnsinn meinen geliebten
Spaghetti-Code aus ein paar Routinen entfernt. Das Programm sollte
jetzt ein wenig schneller laufen.
- Version 1.39 benutzt nicht mehr eigene Message-File-Routinen, sondern
das übliche MsgTrans-Modell. Mir fällt leider nicht mehr viel ein,
wie ich die Größe der !RunImage-Datei drücken kann.
- Sollte jemandem irgendeine hochwichtige Option einfallen, die noch nicht
implementiert ist, einen Fehler gefunden haben, den ich noch nicht kenne
oder andere Anregungen haben, hier meine Adresse:
Stefan Tomlik
Im Dachsbau 11
D-59199 Bönen (Germany)
Tel.: 02383 / 5482 (ab 19 Uhr)
internet eMail: tomlik00@marvin.informatik.uni-dortmund.de